iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0
自我挑戰組

學習 Android Kotlin 隨筆系列 第 22

[ Day 22 ] 據說猴子都懂 Git !(三)基本介紹

  • 分享至 

  • xImage
  •  

前言

上一篇講解了一些在版本上面的操作筆記,這篇將會寫下一些自己蠻常使用的一些 git 小技巧~

Git

  • stash

    當手邊的工作或者目前的功能,開發到一半的時候,忽然想要去其他 branch 看看,或者想要回去過去某個 commit(版本)查查資料,這時打下 git checkout {分枝\commit} 的時候,git 會請你先做一個 commit ,將手邊的這些新增都先存成一個版本。
    這時你會想,也是啦,的確要將現在 untracked file 的先變成一個版本,才能跳到其他版本。於是就先"隨意"的做了一個 commit ,commit message 還可能亂打("tmp?" , "aaa?" )之類的,反正只是要存起來而已,之後回來再 git reset --soft 將這個 commit 給清掉,並且把原本那些功能打回去 untrack 區域。

    • 儲存目前的 untrack file
      我自己是覺得這樣的動作其實蠻麻煩的,一方面也覺得要是要做成一個 commit,就應該是一個完整的版本,而不是一個隨便的、不完整的程式,這樣寫是 ok ,但還有其他方法嗎?這邊推薦使用一個叫做 git stash 的,就是把目前的修改的 untrack 部分,放到一個暫存區,之後 working area 就清空的,就可以安心地跳到其他的版本,當回來的時候,再使用 git stash pop ,那些暫存的東西就又會回到上次修改的樣子囉!
      這樣的優點在於,可以"比較快"的跳到其他版本(不用 git add & git commit),我自己蠻喜歡用的,如果要查看目前的 stash 有哪些,也可以輸入 git stash list 來做查看唷!
  • -- -amend

    使用這個情況在於,我剛下完一個自認為很完美的 commit,忽然發現有一行程式碼寫錯了!但我又不想要再寫一個 commit 叫做 "Fix the bug" 只為了改一兩個字,這樣又多加一個版本,感覺不太好,有辦法把這次的修改並到最後一次的那個完整 commit 嗎?
    可以的,使用 git commit --amend ,可以把該次的修改,直接融合回去最新的那一次 commit,這樣的優點就是不會出現太多太碎的版本出來!

  • rebase -i

    老實講,我自己 rebase 的時候有時也會搞到花掉,我只能提供我會拿來用的部分,其實還有很多可以使用到的唷!
    rebase 基本上是用來改過去歷史的,有時候改不好,可是會出大事的!

    • 改過去歷史的 commit message
      可能現在的你,看著過去的你\他,寫著那不知道在寫__的歷史訊息,想要改掉,可以使用 git rebase -i HEAD~? 去選取過去 ? 個 commit message(從 HEAD 為第一個開始算),假設我想選取過去 4 個,那畫面會如下

      之後透過 vim 去把想要更動的那個 commit 前面的 "pick" 砍掉,要改訊息就改成 r,想要砍掉訊息就改成 d,想要把多個 commit 融合成一個就參考 squash(自己不太熟),以此類推。
      更改歷史相當有風險,這樣表示你修改的過去,你的夥伴來不及參與,這時候改完儲存好之後,想要 git push 上去,有時必須使用 git push -f 去逼迫大家接受你新的過去,這是一件很危險的事!在下 git push -f 這個指令時,請務必知道你自己在幹嘛,也讓你的合作夥伴知道這件事情!

上一篇
[ Day 21 ] 據說猴子都懂 Git !(二)基本介紹
下一篇
[ Day 23 ] FB 自動回文小編(一)
系列文
學習 Android Kotlin 隨筆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言